﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QLNS.Class;
namespace QLNS.NghiepVu
{
    public partial class frmNghiViec : Form
    {
        DB cn = new DB();
        public frmNghiViec()
        {
            InitializeComponent();
        }
        //không khai báo ra làm sao mà gọi nó đc,
         //cái khai báo đó chỉ có tác dụng trong cái hàm load_button đó thôi. chứ k phải toàn cái form này
        //phải khai báo ở đây
       private string tag = "";//như này mới toàn form. oh vợ quên. để vợ làm tiếp. nhá
        //vợ làm tiếp đi
        private void frmNghiViec_Load(object sender, EventArgs e)
        {
          //  hàm ở Day đâu?
           //k cần
            cn.KetNoi();
            Load_button(tag);
            Load_grid(); //thế thôioh
            
        }
        private void Load_button(string tag)// đây thi vợ khai báo đây thi
        {
            if (tag == "them")
            {
                btnLuu.Enabled = true ;
                btnHuy.Enabled = true ;

                btnThem.Enabled = false;
                btnSua.Enabled = false;
                btnXoa.Enabled = false;

                txtMaNghiViec.Enabled = false;
                txtHinhThucNghi.Text = "";
                txtHinhThucNghi.Enabled = true;
            }
            else if (tag == "sua")
            {
                btnThem.Enabled = false;
                btnXoa.Enabled = false;
                btnSua.Enabled = false;

                btnLuu.Enabled = true;
                btnHuy.Enabled = true;

                txtHinhThucNghi.Enabled = true;
            }
            else
            {
                btnThem.Enabled = true;
                btnSua.Enabled = true;
                btnXoa.Enabled = true;

                btnLuu.Enabled = false;
                btnHuy.Enabled = false;

                txtHinhThucNghi.Enabled = false;
                txtMaNghiViec.Enabled = false;
            }


        }

        private void Load_grid()
        {
            //viết sai cả lệnh select
            cn.KetNoi();
            DataTable tbl = cn.getTable(" select row_number() over(order by MaNghiViec) as STT, *from NghiViec");
            dtgNghiViec.DataSource = tbl;

        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            tag = "them";
            Load_button(tag);
            txtMaNghiViec.Text = cn.SinhMa("MaNghiViec","NghiViec","NV");

        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            tag = "sua";
            Load_button(tag);
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            DialogResult h = MessageBox.Show("Bạn có muốn xóa không?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Error);
            if (h == DialogResult.Yes)
            {
                cn.KetNoi();
                cn.Delete_Table("NghiViec", "MaNghiViec='" + txtMaNghiViec.Text + "'");
                Load_grid();
                tag = "";
                Load_button(tag);
                MessageBox.Show("Xóa dữ liệu thành công");
            }
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            if (cn.KetNoi())
            {
                if (tag == "them")
                {
                    if (txtHinhThucNghi.Text == "")
                    {
                        MessageBox.Show("Bạn chưa nhập hình thức nghỉ việc");
                        txtHinhThucNghi.Focus();
                        return;
                    }
                    else // đây có cần else if đau. à rồi. nó có 1 trường k nhập thôi. vợ viết tiếp đi
                    {
                        //select trường HinhThucNgiViec ở bảng nào? rồi mới đến đkoh sai
                        //dấu * trong này nó có ý ngĩa select toàn bộ các trường trong bảng. giờ mình chỉ select 1 trườngo.h ợ hiểu rồi
                        string ketqua = cn.LayDuLieu("SELECT HinhThucNghi from NghiViec WHERE HinhThucNghi=N'" + txtHinhThucNghi.Text + "'");
                        //kĩ năng viết code sai. viết như nào? được chưa. vẫn bị sai đấyoh
                        if (ketqua != "")
                        {
                            MessageBox.Show("Dữ liệu trùng");
                            txtHinhThucNghi.Focus();
                            return;
                        }
                    }//làm gì tiếp đây? k nhớ để vơ ngĩ đã
                    //else cái gì nữa.ohcsai
                    //lệnh insert cấu trúc vowj thấy cái cấu trúc nó hiện chưa? sao nữa
                    //insert vào bảng thì cấu trúc là "tên bảng", "danh sách các cột mình thêm dữ liệu vào","và giá trị của nó"
                    //3 dấu ngoặc kép
                    //ai cho vợ sem bảng khác đấy:(
                    //danh sách cột thêm vào đúng rồi. bjo đén giá trị them vào. mỗi gtri được đặt trong 1 dấu ''. chỉ vậy thôi oh
                    cn.KetNoi();
                    cn.Insert_Table("NghiViec", "MaNghiViec,HinhThucNghi", "'" + txtMaNghiViec.Text + "',N'" + txtHinhThucNghi.Text + "'");
                    //làm gì tiếp?"")thừa rồi. nó có 2 trạng thái là thêm và sửa. đã if them rồi thì else là đủ
                }
                else
                {
                    if (txtHinhThucNghi.Text == "")
                    {
                        MessageBox.Show("Bạn chưa nhập tên hình thức nghỉ việc");
                        txtHinhThucNghi.Focus();
                        return;

                    }//tsao là else vì k biết =)). if chưa nhập tên. rồi phải else if kiểm tra trùng dl chứ
                        //ai cho nhìn/ đã ở bên trong hàm lấy dữ . bao giờ cũng là câu truy vấnoh
                    else
                    {
                        string ketqua = cn.LayDuLieu("SELECT HinhThucNghi from NghiViec WHERE HinhThucNghi=N'"+ txtHinhThucNghi.Text +"'");
                        if(ketqua!="")
                        {
                            MessageBox.Show("Dữ liệu bị trùng");
                            txtHinhThucNghi.Focus();
                            return;
                        }
                    }//update cũng là vào 3 trường
                    cn.KetNoi();
                    cn.Update_Table("NghiViec","HinhThucNghi=N'"+txtHinhThucNghi.Text +"'","MaNghiViec='"+txtMaNghiViec.Text +"'");
                }
                tag = "";
                Load_button(tag );
                Load_grid();
                //sai k thế là đc rồi. vợ cứ viết code nth. sau này k sai nữa/oh ngồi đó nhìn vợ làm
            }
        }
        
        private void btnHuy_Click(object sender, EventArgs e)
        {
            tag = "";
            Load_button(tag );
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {//đây là cái gì?
            //cái gì ở sau kia sa. đây là 1 câu hỏi cơ mà. câu hỏi thì icon là gì? k biết vợ chỉ biết làm theo cái kia thôi có hiểu đâu MessageBoxButtons: nút thì hỏi có hay k?. icon là phải question chứ
            DialogResult h = MessageBox.Show("Bạn có muốn thát không?","Thông báo",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
            if (h == DialogResult.Yes)
            {
                this.Close();
            }
        }

        private void dtgNghiViec_SelectionChanged(object sender, EventArgs e)
        {
            //vợ k nhớ
            //load từ dtg lên đâu?sai. đếm cơ mà?. đếm trong tiếng anh là gì? count vậy đếm dòng thì là gì? rowcont
            if(dtgNghiViec.RowCount >0)
            {
            txtMaNghiViec.Text = dtgNghiViec.CurrentRow.Cells["MaNghiViec"].Value.ToString();
            txtHinhThucNghi.Text = dtgNghiViec.CurrentRow.Cells["HinhThucNghi"].Value.ToString();
            }
            //the thoi ak vợ. nhơ còn một câu lệnh nữa mà. cấu lệnh kt sem trong dtg có dòng dl nào k?
        }// xong chưa nhỉ. nó chỉ thế thôi

    }
}
